kubeadm 多master集群证书过期处理步骤

Link

由 张黄淳创建, 最终由 田华修改于 九月 13, 2021

记得备份!

记得备份!

记得备份!

cp -a /etc/kubernetes/  /etc/kubernetes_backup_`date +%Y%m%d`


看看是否证书过期

find /etc/kubernetes/pki/ -type f -name "*.crt" -print|egrep -v 'ca.crt$'|xargs -L 1 -t  -i bash -c 'openssl x509  -noout -text -in {}|grep After'

自动更新

todo


手动续期证书

todo


手动重新签发证书(仅当以上操作无效时)

确认版本1.13 1.14有效

1.确认kubeadm-config.yaml内容

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: v1.13.4
apiServer:
certSANs:
- "172.16.1.130"
controlPlaneEndpoint: "172.16.1.130:8443"

注意其中kubernetesVersion为当前kubernetes版本,apiServer.certSANs为haproxy地址,controlPlaneEndpoint为haproxy反代apiserver的地址

如果找不到文件可以及时生成

kubeadm config view >/tmp/cluster.yaml

2.备份kubernetes配置目录

cp -a /etc/kubernetes /etc/kubernetes_bak

3.删除已有的客户端证书(注意,ca证书保持不变)

rm -f /etc/kubernetes/pki/apiserver*

rm -f /etc/kubernetes/pki/front-proxy-client.*

rm -f /etc/kubernetes/pki/etcd/healthcheck-client.*

rm -f /etc/kubernetes/pki/etcd/peer.*

rm -f /etc/kubernetes/pki/etcd/server.*

4.重新生成证书

kubeadm init phase certs all --config kubeadm-config.yaml

(日志输出中重用已有CA,签发新的客户端证书)

4.5 确认自己有/etc/kubernetes/ 备份

cd /etc/kubernetes/ && rm -f {admin.conf,controller-manager.conf,kubelet.conf,scheduler.conf}

5.重新生成kubenetes配置文件

kubeadm init phase kubeconfig all --config kubeadm-config.yaml

6.重启apiserver, controller, scheduler, etcd服务

docker ps -a | grep -e apiserver -e controller -e scheduler -e etcd | grep -v pause

docker restart xxx xxx xxx xxx

7.更新kubectl配置文件

cp ~/.kube/config ~/.kube/config_bak

cp /etc/kubernetes/admin.conf ~/.kube/config

8.登录其他机器重复步骤1~7

9.确认集群节点状态

kubectl get nodes

FAQ

kubectl top no报错

error: You must be logged in to the server (Unauthorized)

因为4.5没做